package br.com.puertorico.common.exceptions;


/**
 * Para exce&ccedil;&otilde;es de sistema (infra-estrutura). Qualquer
 * exce&ccedil;&atilde;o capturada na aplica&ccedil;&atilde;o que &eacute; um
 * problemas de infra-estrutura ou bug, ou seja, uma exce&ccedil;&atilde;o
 * n&atilde;o esperada deve ser lan&ccedil;ada como SystemException.
 *
 * @author <a href="mailto:daniel.camargo@ufms.br">Daniel Camargo</a>
 */
public class SystemException extends RuntimeException {

	private static final long serialVersionUID = -2874423497814038937L;

	public SystemException() {
		super();
	}

	public SystemException(String message) {
		super(message);
	}

	public SystemException(Throwable cause) {
		super(cause);
	}

	public SystemException(String message, Throwable cause) {
		super(message, cause);
	}

	@Override
	public Throwable getCause() {
		String cause = null;
		return (cause != null && !cause.isEmpty()) ? new Throwable(cause, this)
				: super.getCause();
	}

	@Override
	public String getMessage() {
		String message = null;
		return (message != null && !message.isEmpty()) ? message : super
				.getMessage();
	}

	protected Object[] getCauseParams() {
		return null;
	}

	protected Object[] getMessageParams() {
		return null;
	}

}
